#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/wait.h>

int main(){
  int i;
  for(i=0;i<5;i++){
    pid_t id=fork();
    if(id==0){
      int cnt=5;
      printf("第%d个进程创建成功！pid:%d,ppid:%d\n",i,getpid(),getppid());
      while(cnt--){
        printf("该进程还要运行%d秒\n",cnt);
        sleep(1);
      }
      exit(i);
    }
    else if(id>0) {
      int status=0;
      while(1){
        pid_t ret=waitpid(-1,&status,WNOHANG);
        if(ret>0){
          printf("捕获到一个进程，ret为%d,id是%d,退出码是%d\n",ret,id,WEXITSTATUS(status));
          break;
        }
        else printf("我是父进程,未捕获到进程，继续执行应做的事.pid:%d,ppid:%d\n",getpid(),getppid());
        sleep(1);
      }
    }
    else printf("进程创建失败\n");
  }



  return 0;
}
